home *** CD-ROM | disk | FTP | other *** search
- Path: cs.mu.OZ.AU!bounce-back
- From: vandevod@cs.rpi.edu (David Vandevoorde)
- Newsgroups: comp.std.c++
- Subject: Re: Observations on templates
- Date: 09 Feb 96 04:07:44 GMT
- Organization: RPI Computer Science
- Approved: fjh@cs.mu.oz.au
- Message-ID: <xso68dhlf6f.fsf@fork.cs.rpi.edu>
- References: <u9vilu8zvz.fsf@yorick.cygnus.com> <ADqNY6n4sN@qsar.chem.msu.su>
- NNTP-Posting-Host: munta.cs.mu.oz.au
- X-Original-Date: 08 Feb 1996 15:45:28 -0500
- In-Reply-To: "Eugene Radchenko"'s message of 8 Feb 1996 17:00:57 GMT
- X-Newsreader: Gnus v5.1
- X-Auth: PGPMoose V1.1 PGP comp.std.c++
- iQBFAgUBMRrIouEDnX0m9pzZAQHjRgF7BcdwQBLhkwFobNwpFJ+w5HRQBQyAHTJT
- ocHe0zPXzCXChHI9PUOYmKj2lxnBdub9
- =TpIX
- Originator: fjh@munta.cs.mu.OZ.AU
-
- >>>>> "ER" == "Eugene Radchenko" <eugene@qsar.chem.msu.su> writes:
- [...]
- >>> 3) Clause [temp.arg.explicit] verses 2-3 requires that for explicit arg in
- >>> member template to be present it must be qualified by 'template' keyword,
- >>> e.g.
- >>> X *p; p->template alloc<200>();
- >>> But to use operator -> we need X class definition anyway - so we know that
- >>> alloc() is a template.
-
- >> It is needed in some situations where we do not have the X class definition
- >> -- in template definitions, like with typename.
-
- ER> And what are we supposed to do with function alloc() if we do not have the
- ER> class definition and hence do not know anything about this function?
-
- C++ compilers are not trivial things to write and it makes sense to
- decompose the compilation process in well-separated ``phases''. One
- such phase is lexical analysis (decomposing the source text into
- tokens), another is syntactical analysis (also called parsing; classify
- the tokens and their relationship) and yet another one is semantic
- analysis (``interpret the classification and relationships determined
- during syntactical analysis'').
-
- I may be somwhat innacurate in my descriptions, but feeding back
- information from semantic analysis (e.g., ``class X has no member
- template alloc'') to syntactic analysis (so that it can find out that
- ``X::alloc is a data member, not a member function template'') makes
- the process harder. The traditional example, is more along the
- lines of:
-
- p->alloc<2>(0);
-
- Is this meant to be equivalent to `(p->alloc < 2) > 0' or to the
- invocation of a template member function? With the added syntax,
- the parser knows without relying on the semantic analysis.
-
- Daveed
- ---
- [ comp.std.c++ is moderated. Submission address: std-c++@ncar.ucar.edu.
- Contact address: std-c++-request@ncar.ucar.edu. Moderation policy:
- http://reality.sgi.com/employees/austern_mti/std-c++/policy.html. ]
-